﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Medianamik.Core;
using System.Globalization;

namespace Medianamik.UI.Mediasend.NodeTypes
{
    /// <summary>
    /// Type de base servant à configurer le compte Mediasend utilisé.
    /// </summary>
    public class MediasendConfiguration : SystemNode<MediasendConfiguration>
    {
        /// <summary>
        /// Étant donné que ce type est invariant à la langue, on force l'InvariantCulture
        /// </summary>
        public override CultureInfo DefaultCulture { get { return CultureInfo.InvariantCulture; } set { } }

        /// <summary>
        /// Id du type de noeud Médianamik
        /// </summary>
        public static Guid TypeId { get { return new Guid("a921fbe3-b6ec-41a6-b2fb-52bd685dd8fc"); } }

        public override Guid SystemNodeTypeID
        { get { return TypeId; } }

        /// <summary>
        /// Compte qu'un seul type car c'est un noeud de configuration
        /// </summary>
        public static Guid NodeId { get { return new Guid("a8d9d751-29da-47ec-9bcb-439d449a96b1"); } }

        public int? ClientId
        {
            get { return DefaultInstance["MediasendClientId"].GetValue<int?>(); }
        }

        public Guid? BaseNodeTemplate
        {
            get { return DefaultInstance["BaseNodeTemplate"].GetValue<Guid?>(); }
        }

        /// <summary>
        /// Nom d'utilisateur du compte Mediasend
        /// </summary>
        public string Username
        {
            get { return DefaultInstance["Username"].GetValue<string>(); }
        }

        /// <summary>
        /// Mot de passe du compte Mediasend
        /// </summary>
        public string Password
        {
            get { return DefaultInstance["Password"].GetValue<string>(); }
        }

        private Node _baseNodeTemplateNode;
        /// <summary>
        /// Accès rapide au noeud racine des gabarits de courriels
        /// </summary>
        public Node BaseNodeTemplateNode
        {
            get
            {
                if (_baseNodeTemplateNode == null && BaseNodeTemplate != null)
                    _baseNodeTemplateNode = NodeManager.GetNode(BaseNodeTemplate.Value);

                return _baseNodeTemplateNode;
            }
        }
    }
}
